package com.shell.governor.security.user.controller;

import com.shell.bee.base.annotation.Logging;
import com.shell.bee.base.utils.SystemUtil;
import com.shell.bee.base.utils.SystemUtil.SystemMode;
import com.shell.bee.entity.mvc.RetMsg;
import com.shell.bee.mvc.controller.BaseController;
import com.shell.framework.utils.CommonDataUtil;
import com.shell.governor.modules.message.keyword.SmsFindPasswordKeyWord;
import com.shell.governor.modules.message.keyword.SysKeyword;
import com.shell.governor.modules.util.MessageSender;
import com.shell.governor.security.user.service.SmsCheckService;
import com.shell.governor.user.dao.PubUserDao;
import com.shell.governor.user.service.PubUserService;
import com.shell.governor.user.vo.PubUserVo;
import com.shell.governor.user.vo.UserQueryVo;
import java.util.List;
import org.apache.commons.logging.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SmsCheckController extends BaseController {
	@Autowired
	private SmsCheckService smsCheckService;
	@Autowired
	private PubUserService pubUserService;
	@Autowired
	private PubUserDao pubUserDao;

	@RequestMapping({ "auth/sms-check" })
	@Logging(module = "��������", methods = "������������")
	public RetMsg smsCheck(String phoneNum, String smsCode) {
		return this.smsCheckService.smsCheck(phoneNum, smsCode);
	}

	@RequestMapping({ "auth/get-sms-code" })
	@Logging(module = "��������", methods = "��������������")
	public RetMsg getSmsCode(String phoneNum) {
		String smsCode = this.smsCheckService.getSmsCode(phoneNum);

		UserQueryVo user = new UserQueryVo();
		user.setPhoneNo(phoneNum);
		String[] notState = { "D" };
		user.setNotStates(notState);
		List<PubUserVo> users = this.pubUserDao.queryUser(user);
		if ((users == null) || (users.size() == 0)) {
			return new RetMsg("error", true, "��������" + phoneNum + "����������������", 3000);
		}
		try {
			SmsFindPasswordKeyWord keyWord = new SmsFindPasswordKeyWord();
			keyWord.setActiveTime("5");
			keyWord.setVerifyCode(smsCode);
			MessageSender.sendMessageToPhone(phoneNum, CommonDataUtil.getUserId(), "MT00136", keyWord);
		} catch (Exception e) {
			this.logger.error("������������������������������" + e.getMessage());
			e.printStackTrace();
		}
		if (!SystemUtil.SystemMode.prod.equals(SystemUtil.getSystemMode())) {
			return new RetMsg("success", true, "����������������,��������" + smsCode);
		}
		return new RetMsg("info", true, "��������������������������������", 3000);
	}

	@RequestMapping({ "auth/get-phone-sms-code" })
	@Logging(module = "��������", methods = "��������������������")
	public RetMsg getPhoneSmsCode(String phoneNum) {
		String smsCode = this.smsCheckService.getSmsCode(phoneNum);
		SysKeyword sysKeyword = new SysKeyword();
		PubUserVo user = this.pubUserService.selectUser(CommonDataUtil.getUserId());
		sysKeyword.setUserName(user.getUserName());
		sysKeyword.setVerifyCode(smsCode);
		MessageSender.sendMessageToPhone(phoneNum, "", "MT00132", sysKeyword);
		return new RetMsg("info", true, "��������������������������������", 3000);
	}

	@RequestMapping({ "user-center/get-sms-code-for-modify-phone" })
	@Logging(module = "��������", methods = "��������������������")
	public RetMsg getSmsCodeForModifyPhone(String phoneNum) {
		String smsCode = this.smsCheckService.getSmsCode(phoneNum);
		SysKeyword sysKeyword = new SysKeyword();
		PubUserVo user = this.pubUserService.selectUser(CommonDataUtil.getUserId());
		sysKeyword.setUserName(user.getUserName());
		sysKeyword.setVerifyCode(smsCode);
		MessageSender.sendMessageToPhone(phoneNum, "", "MT02209", sysKeyword);
		if (!SystemUtil.SystemMode.prod.equals(SystemUtil.getSystemMode())) {
			return new RetMsg("info", true, "��������������������������������:" + smsCode, 3000);
		}
		return new RetMsg("info", true, "��������������������������������", 3000);
	}

	@RequestMapping({ "sms/check-sms-code" })
	@Logging(module = "����������", methods = "������������������")
	public RetMsg checkSmsCode(String phoneNum, String smsCode) {
		return this.smsCheckService.checkSmsCode(phoneNum, smsCode);
	}

	@RequestMapping({ "sms/send-sms-code" })
	@Logging(module = "����������", methods = "��������������������")
	public RetMsg sendSmsCode(String phoneNum) {
		String smsCode = this.smsCheckService.getSmsCode(phoneNum);
		SmsFindPasswordKeyWord keyWord = new SmsFindPasswordKeyWord();
		keyWord.setActiveTime("5");
		keyWord.setVerifyCode(smsCode);
		MessageSender.sendMessageToPhone(phoneNum, "", "MT00132", keyWord);
		if (!SystemUtil.SystemMode.prod.equals(SystemUtil.getSystemMode())) {
			return new RetMsg("success", true, "��������������������������������" + smsCode, 3000);
		}
		return new RetMsg("success", true, "��������������������������������", 3000);
	}
}
